
#ifndef __RUBY_M3G_INTERNAL_HPP__
#define __RUBY_M3G_INTERNAL_HPP__

#include "ruby-m3g.hpp"

// 30クラスのfree関数
extern void ruby_Object3D_free            (m3g::Object3D* ptr);
extern void ruby_AnimationController_free (m3g::AnimationController* ptr);
extern void ruby_AnimationTrack_free      (m3g::AnimationTrack* ptr);
extern void ruby_Appearance_free          (m3g::Appearance* ptr);
extern void ruby_Background_free          (m3g::Background* ptr);
extern void ruby_CompositingMode_free     (m3g::CompositingMode* ptr);
extern void ruby_Fog_free                 (m3g::Fog* ptr);
extern void ruby_Image2D_free             (m3g::Image2D* ptr);
extern void ruby_TriangleStripArray_free  (m3g::TriangleStripArray* ptr);
extern void ruby_KeyframeSequence_free    (m3g::KeyframeSequence* ptr);
extern void ruby_Material_free            (m3g::Material* ptr);
extern void ruby_PolygonMode_free         (m3g::PolygonMode* ptr);
extern void ruby_Camera_free              (m3g::Camera* ptr);
extern void ruby_Group_free               (m3g::Group* ptr);
extern void ruby_World_free               (m3g::World* ptr);
extern void ruby_Light_free               (m3g::Light* ptr);
extern void ruby_Mesh_free                (m3g::Mesh* ptr);
extern void ruby_MorphingMesh_free        (m3g::MorphingMesh* ptr);
extern void ruby_SkinnedMesh_free         (m3g::SkinnedMesh* ptr);
extern void ruby_Sprite3D_free            (m3g::Sprite3D* ptr);
extern void ruby_Texture2D_free           (m3g::Texture2D* ptr);
extern void ruby_VertexArray_free         (m3g::VertexArray* ptr);
extern void ruby_VertexBuffer_free        (m3g::VertexBuffer* ptr);
extern void ruby_Transform_free           (m3g::Transform* ptr);
extern void ruby_RayIntersection_free     (m3g::RayIntersection* ptr);

// 30クラスのmark関数
extern void ruby_Object3D_mark            (m3g::Object3D* ptr);
extern void ruby_AnimationController_mark (m3g::AnimationController* ptr);
extern void ruby_AnimationTrack_mark      (m3g::AnimationTrack* ptr);
extern void ruby_Appearance_mark          (m3g::Appearance* ptr);
extern void ruby_Background_mark          (m3g::Background* ptr);
extern void ruby_CompositingMode_mark     (m3g::CompositingMode* ptr);
extern void ruby_Fog_mark                 (m3g::Fog* ptr);
extern void ruby_Image2D_mark             (m3g::Image2D* ptr);
extern void ruby_TriangleStripArray_mark  (m3g::TriangleStripArray* ptr);
extern void ruby_KeyframeSequence_mark    (m3g::KeyframeSequence* ptr);
extern void ruby_Material_mark            (m3g::Material* ptr);
extern void ruby_PolygonMode_mark         (m3g::PolygonMode* ptr);
extern void ruby_Camera_mark              (m3g::Camera* ptr);
extern void ruby_Group_mark               (m3g::Group* ptr);
extern void ruby_World_mark               (m3g::World* ptr);
extern void ruby_Light_mark               (m3g::Light* ptr);
extern void ruby_Mesh_mark                (m3g::Mesh* ptr);
extern void ruby_MorphingMesh_mark        (m3g::MorphingMesh* ptr);
extern void ruby_SkinnedMesh_mark         (m3g::SkinnedMesh* ptr);
extern void ruby_Sprite3D_mark            (m3g::Sprite3D* ptr);
extern void ruby_Texture2D_mark           (m3g::Texture2D* ptr);
extern void ruby_VertexArray_mark         (m3g::VertexArray* ptr);
extern void ruby_VertexBuffer_mark        (m3g::VertexBuffer* ptr);
extern void ruby_Transform_mark           (m3g::Transform* ptr);
extern void ruby_RayIntersection_mark     (m3g::RayIntersection* ptr);

// 30クラスのinitialize関数
extern VALUE ruby_Transform_initialize (int argc, VALUE* argv, VALUE self);
extern VALUE ruby_RayIntersection_initialize (VALUE self);


#endif
